package com.project.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.ShopBean;
import com.project.bean.UserBean;
import com.project.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.HashMap;

/**
 * 用户应用控制器
 */
@RestController
@RequestMapping("user")
public class UserController {
    @Autowired
    private IUserService userService;

    /**
     * 登陆
     * @param userName 用户名
     * @param pwd 密码
     * @return 登陆用户，如果登陆失败，返回null
     */
    @RequestMapping("login")
    public UserBean login(String userName, String pwd, HttpServletRequest request){
        UserBean user = userService.login(userName,pwd);
        System.out.println(user);
        if(user == null){
            return null;
        }

        //在HttpSession中，封装登陆用户
        request.getSession().setAttribute("loginUser",user);
        //如果用户的权限为采购员或超级管理员，那么分配采购车
        if("采购员".equals(user.getGrade()) || "超级管理员".equals(user.getGrade())){
            request.getSession().setAttribute("buyMap",new HashMap<String,ShopBean>());
        }
        //如果用户的权限为销售员或超级管理员，那么分配销售车
        if("销售员".equals(user.getGrade()) || "超级管理员".equals(user.getGrade())){
            request.getSession().setAttribute("sellMap",new HashMap<String,ShopBean>());
        }

        return user;
    }

    /**
     * 添加用户
     * @param user 用户对象
     */
    @RequestMapping("add")
    public String add(UserBean user){
        userService.add(user);
        return "ok";
    }

    /**
     * 按ID查询用户
     * @param id 用户ID
     * @return 用户对象
     */
    @RequestMapping("findById")
    public UserBean findById(Integer id){

        return userService.findById(id);
    }

    /**
     * 按ID修改权限
     * @param id 用户ID
     * @param grade 新权限
     */
    @RequestMapping("updateGrade")
    public String updateGrade(Integer id,String grade){
        userService.updateGrade(id,grade);
        return "ok";
    }

    /**
     * 按ID删除用户
     * @param id 用户ID
     */
    @RequestMapping("del")
    public String del(Integer id){
        userService.del(id);
        return "ok";
    }

    /**
     * 按ID修改密码
     * @param id 用户ID
     * @param newPwd 新密码
     */
    @RequestMapping("updatePwd")
    public String  updatePwd(Integer id,String newPwd){
        userService.updatePwd(id,newPwd);
        return "ok";
    }

    /**
     * 分页查询所有用户
     * @param pageNO 页码
     * @return 分贠对象
     */
    @RequestMapping("cutAll")
    public IPage<UserBean> cutAll(Integer pageNO){
        return userService.cutAll(pageNO);
    }
}
